import lombok.Data;

/**
 * @author zhaoren
 * @version 1.0
 * @description 抽象模板类，定义好整个模块/算法的骨架，让模板中具体的实现可以留给子类让其可以有不同的实现
 * @date 2020/7/28 17:02
 **/

@Data
public abstract class TemplateClass {

    private String name;
    private String ans;

    /**
     * 这是留给子类填充的模板方法
     */
    public abstract void primitiveMethod1();
    public abstract void primitiveMethod2();

    /**
     * 模板方法，给出了整个实现逻辑骨架，而逻辑的组成是一些相应的抽象操作，可以延迟到子类去实现
     */
    public void templateMethod(){
        primitiveMethod1();
        primitiveMethod2();

        if (ans.equals("hello world!")){
            System.out.println("恭喜您" + name + "答案正确！");
        }else {
            System.out.println("抱歉，" + name + "您的答案错误!");
        }
    }
}
